merged testgtkrc with the pre-themes one, removed system specific
authorTim Janik <timj@gtk.org>
Mon, 30 Nov 1998 10:38:29 +0000 (10:38 +0000)
committerTim Janik <timj@src.gnome.org>
Mon, 30 Nov 1998 10:38:29 +0000 (10:38 +0000)
Mon Nov 30 10:11:29 1998  Tim Janik  <timj@gtk.org>

        * gtk/testgtkrc: merged testgtkrc with the pre-themes one, removed
        system specific includes.

        * gtk/gtksignal.c: asured that stop and restart emissions are also
        checked and processed for not connected objects. fixed up restart
        emission administration. invoke emission hooks after emission, hooks
        are not supposed to muck around with the current emission, and
        may also not cause emission restarts. fixed up stop emission
        administration.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtksignal.c
gtk/testgtkrc
tests/testgtkrc

index 05e15c24d5122c6d1d6505feda1e700ed7d59939..4f80a6e4bc33418bae28c688c6eff6c9151caed6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+Mon Nov 30 10:11:29 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/testgtkrc: merged testgtkrc with the pre-themes one, removed
+       system specific includes.
+
+       * gtk/gtksignal.c: asured that stop and restart emissions are also
+       checked and processed for not connected objects. fixed up restart
+       emission administration. invoke emission hooks after emission, hooks
+       are not supposed to muck around with the current emission, and
+       may also not cause emission restarts. fixed up stop emission
+       administration.
+
 Mon Nov 30 06:20:36 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/testgtk.c: added an event watcher for enter/leave based on
index 05e15c24d5122c6d1d6505feda1e700ed7d59939..4f80a6e4bc33418bae28c688c6eff6c9151caed6 100644 (file)
@@ -1,3 +1,15 @@
+Mon Nov 30 10:11:29 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/testgtkrc: merged testgtkrc with the pre-themes one, removed
+       system specific includes.
+
+       * gtk/gtksignal.c: asured that stop and restart emissions are also
+       checked and processed for not connected objects. fixed up restart
+       emission administration. invoke emission hooks after emission, hooks
+       are not supposed to muck around with the current emission, and
+       may also not cause emission restarts. fixed up stop emission
+       administration.
+
 Mon Nov 30 06:20:36 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/testgtk.c: added an event watcher for enter/leave based on
index 05e15c24d5122c6d1d6505feda1e700ed7d59939..4f80a6e4bc33418bae28c688c6eff6c9151caed6 100644 (file)
@@ -1,3 +1,15 @@
+Mon Nov 30 10:11:29 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/testgtkrc: merged testgtkrc with the pre-themes one, removed
+       system specific includes.
+
+       * gtk/gtksignal.c: asured that stop and restart emissions are also
+       checked and processed for not connected objects. fixed up restart
+       emission administration. invoke emission hooks after emission, hooks
+       are not supposed to muck around with the current emission, and
+       may also not cause emission restarts. fixed up stop emission
+       administration.
+
 Mon Nov 30 06:20:36 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/testgtk.c: added an event watcher for enter/leave based on
index 05e15c24d5122c6d1d6505feda1e700ed7d59939..4f80a6e4bc33418bae28c688c6eff6c9151caed6 100644 (file)
@@ -1,3 +1,15 @@
+Mon Nov 30 10:11:29 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/testgtkrc: merged testgtkrc with the pre-themes one, removed
+       system specific includes.
+
+       * gtk/gtksignal.c: asured that stop and restart emissions are also
+       checked and processed for not connected objects. fixed up restart
+       emission administration. invoke emission hooks after emission, hooks
+       are not supposed to muck around with the current emission, and
+       may also not cause emission restarts. fixed up stop emission
+       administration.
+
 Mon Nov 30 06:20:36 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/testgtk.c: added an event watcher for enter/leave based on
index 05e15c24d5122c6d1d6505feda1e700ed7d59939..4f80a6e4bc33418bae28c688c6eff6c9151caed6 100644 (file)
@@ -1,3 +1,15 @@
+Mon Nov 30 10:11:29 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/testgtkrc: merged testgtkrc with the pre-themes one, removed
+       system specific includes.
+
+       * gtk/gtksignal.c: asured that stop and restart emissions are also
+       checked and processed for not connected objects. fixed up restart
+       emission administration. invoke emission hooks after emission, hooks
+       are not supposed to muck around with the current emission, and
+       may also not cause emission restarts. fixed up stop emission
+       administration.
+
 Mon Nov 30 06:20:36 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/testgtk.c: added an event watcher for enter/leave based on
index 05e15c24d5122c6d1d6505feda1e700ed7d59939..4f80a6e4bc33418bae28c688c6eff6c9151caed6 100644 (file)
@@ -1,3 +1,15 @@
+Mon Nov 30 10:11:29 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/testgtkrc: merged testgtkrc with the pre-themes one, removed
+       system specific includes.
+
+       * gtk/gtksignal.c: asured that stop and restart emissions are also
+       checked and processed for not connected objects. fixed up restart
+       emission administration. invoke emission hooks after emission, hooks
+       are not supposed to muck around with the current emission, and
+       may also not cause emission restarts. fixed up stop emission
+       administration.
+
 Mon Nov 30 06:20:36 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/testgtk.c: added an event watcher for enter/leave based on
index 05e15c24d5122c6d1d6505feda1e700ed7d59939..4f80a6e4bc33418bae28c688c6eff6c9151caed6 100644 (file)
@@ -1,3 +1,15 @@
+Mon Nov 30 10:11:29 1998  Tim Janik  <timj@gtk.org>
+
+       * gtk/testgtkrc: merged testgtkrc with the pre-themes one, removed
+       system specific includes.
+
+       * gtk/gtksignal.c: asured that stop and restart emissions are also
+       checked and processed for not connected objects. fixed up restart
+       emission administration. invoke emission hooks after emission, hooks
+       are not supposed to muck around with the current emission, and
+       may also not cause emission restarts. fixed up stop emission
+       administration.
+
 Mon Nov 30 06:20:36 1998  Tim Janik  <timj@gtk.org>
 
        * gtk/testgtk.c: added an event watcher for enter/leave based on
index 7bfd9ee17bb8e54bb0eae0775a675a4e5001c9e6..4afdc39b0e6489d3d7da625e2f93ab319de0e462 100644 (file)
@@ -592,7 +592,10 @@ gtk_signal_emit_stop (GtkObject *object,
   g_return_if_fail (signal_id >= 1);
   
   if (gtk_emission_check (current_emissions, object, signal_id))
-    gtk_emission_add (&stop_emissions, object, signal_id);
+    {
+      if (!gtk_emission_check (stop_emissions, object, signal_id))
+       gtk_emission_add (&stop_emissions, object, signal_id);
+    }
   else
     g_warning ("gtk_signal_emit_stop(): no current emission (%u) for object `%s'",
               signal_id,
@@ -1339,47 +1342,69 @@ gtk_signal_real_emit (GtkObject *object,
                      guint      signal_id,
                      GtkArg    *params)
 {
+  static guint emission_hooks_called = 0;
   GtkSignal     signal;
   GtkHandler   *handlers;
-  GtkSignalFunc *signal_func_offset;
+  GtkSignalFunc  signal_func;
+
+  if (emission_hooks_called)
+    {
+      g_warning ("gtk_signal_real_emit() may not recurse from emission hooks");
+      return;
+    }
 
   /* gtk_handlers_run() expects a reentrant GtkSignal*, so we allocate
    * it locally on the stack. we save some lookups ourselves with this as well.
    */
   signal = *LOOKUP_SIGNAL_ID (signal_id);
   if (signal.function_offset)
-    {
-      signal_func_offset = (GtkSignalFunc*) ((guchar*) object->klass + signal.function_offset);
-      if (!*signal_func_offset)
-       signal_func_offset = (GtkSignalFunc*) 0;
-    }
+    signal_func = G_STRUCT_MEMBER (GtkSignalFunc, object->klass, signal.function_offset);
   else
-    signal_func_offset = NULL;
+    signal_func = NULL;
   
 #ifdef  G_ENABLE_DEBUG
   if (gtk_debug_flags & GTK_DEBUG_SIGNALS ||
       object == gtk_trace_signal_object)
-    fprintf (stdout, "GTK-DEBUG: signal_emit (\"%s\") for %s:%p (class-pointer %p)\n",
-            signal.name,
-            gtk_type_name (GTK_OBJECT_TYPE (object)),
-            object,
-            signal_func_offset);
+    g_message ("%s::%s emitted (object=%p class-method=%p)\n",
+              gtk_type_name (GTK_OBJECT_TYPE (object)),
+              signal.name,
+              object,
+              signal_func);
 #endif  /* G_ENABLE_DEBUG */
   
-  if ((signal.signal_flags & GTK_RUN_NO_RECURSE) &&
+  if (signal.signal_flags & GTK_RUN_NO_RECURSE &&
       gtk_emission_check (current_emissions, object, signal_id))
     {
-      gtk_emission_add (&restart_emissions, object, signal_id);
+      if (!gtk_emission_check (restart_emissions, object, signal_id))
+       gtk_emission_add (&restart_emissions, object, signal_id);
+
       return;
     }
   
   gtk_object_ref (object);
-
+  
   gtk_emission_add (&current_emissions, object, signal_id);
   
  emission_restart:
-  if (GTK_RUN_TYPE (signal.signal_flags) != GTK_RUN_LAST && signal_func_offset)
-    signal.marshaller (object, *signal_func_offset, NULL, params);
+  
+  if (signal.signal_flags & GTK_RUN_FIRST && signal_func)
+    {
+      signal.marshaller (object, signal_func, NULL, params);
+      
+      if (stop_emissions && gtk_emission_check (stop_emissions, object, signal_id))
+       {
+         gtk_emission_remove (&stop_emissions, object, signal_id);
+         goto emission_done;
+       }
+      else if (restart_emissions &&
+              signal.signal_flags & GTK_RUN_NO_RECURSE &&
+              gtk_emission_check (restart_emissions, object, signal_id))
+       {
+         gtk_emission_remove (&restart_emissions, object, signal_id);
+         
+         goto emission_restart;
+       }
+    }
   
   if (GTK_OBJECT_CONNECTED (object))
     {
@@ -1387,22 +1412,38 @@ gtk_signal_real_emit (GtkObject *object,
       if (handlers)
        {
          gint return_val;
-
+         
          return_val = gtk_handlers_run (handlers, &signal, object, params, FALSE);
          switch (return_val)
            {
-           case  EMISSION_CONTINUE:
+           case EMISSION_CONTINUE:
              break;
-           case  EMISSION_RESTART:
+           case EMISSION_RESTART:
              goto emission_restart;
-           case  EMISSION_DONE:
+           case EMISSION_DONE:
              goto emission_done;
            }
        }
     }
   
-  if (GTK_RUN_TYPE (signal.signal_flags) != GTK_RUN_FIRST && signal_func_offset)
-    signal.marshaller (object, *signal_func_offset, NULL, params);
+  if (signal.signal_flags & GTK_RUN_LAST && signal_func)
+    {
+      signal.marshaller (object, signal_func, NULL, params);
+      
+      if (stop_emissions && gtk_emission_check (stop_emissions, object, signal_id))
+       {
+         gtk_emission_remove (&stop_emissions, object, signal_id);
+         goto emission_done;
+       }
+      else if (restart_emissions &&
+              signal.signal_flags & GTK_RUN_NO_RECURSE &&
+              gtk_emission_check (restart_emissions, object, signal_id))
+       {
+         gtk_emission_remove (&restart_emissions, object, signal_id);
+         
+         goto emission_restart;
+       }
+    }
   
   if (GTK_OBJECT_CONNECTED (object))
     {
@@ -1410,7 +1451,7 @@ gtk_signal_real_emit (GtkObject *object,
       if (handlers)
        {
          gint return_val;
-
+         
          return_val = gtk_handlers_run (handlers, &signal, object, params, TRUE);
          switch (return_val)
            {
@@ -1423,24 +1464,26 @@ gtk_signal_real_emit (GtkObject *object,
            }
        }
     }
-
-  /* do *not* reorder this call! */
-  if (signal.hook_list)
+  
+ emission_done:
+  if (restart_emissions && signal.signal_flags & GTK_RUN_NO_RECURSE)
+    gtk_emission_remove (&restart_emissions, object, signal_id);
+  
+  gtk_emission_remove (&current_emissions, object, signal_id);
+  
+  /* the hook invokation portion may not be moved!
+   */
+  if (signal.hook_list && !GTK_OBJECT_DESTROYED (object))
     {
       gpointer data[2];
 
       data[0] = &signal;
       data[1] = object;
+      emission_hooks_called++;
       g_hook_list_marshal_check (signal.hook_list, TRUE, gtk_emission_hook_marshaller, &data);
+      emission_hooks_called--;
     }
 
- emission_done:
-  
-  gtk_emission_remove (&current_emissions, object, signal_id);
-  
-  if (signal.signal_flags & GTK_RUN_NO_RECURSE)
-    gtk_emission_remove (&restart_emissions, object, signal_id);
-  
   gtk_object_unref (object);
 }
 
@@ -1593,12 +1636,6 @@ gtk_signal_remove_emission_hook (guint signal_id,
 
   if (!signal->hook_list || !g_hook_destroy (signal->hook_list, hook_id))
     g_warning ("gtk_signal_remove_emission_hook(): could not find hook (%u)", hook_id);
-  if (signal->hook_list && !signal->hook_list->hooks)
-    {
-      g_hook_list_clear (signal->hook_list);
-      g_free (signal->hook_list);
-      signal->hook_list = NULL;
-    }
 }
 
 static gboolean
@@ -1612,7 +1649,10 @@ gtk_emission_hook_marshaller (GHook   *hook,
   signal = data[0];
   func = hook->func;
 
-  return func (data[1], signal->signal_id, hook->data);
+  if (!GTK_OBJECT_DESTROYED (data[1]))
+    return func (data[1], signal->signal_id, hook->data);
+  else
+    return TRUE;
 }
 
 static guint
@@ -1804,7 +1844,7 @@ gtk_handlers_run (GtkHandler       *handlers,
       
       gtk_signal_handler_ref (handlers);
       
-      if (handlers->blocked == 0 && (handlers->after == after))
+      if (!handlers->blocked && handlers->after == after)
        {
          if (handlers->func)
            {
@@ -1814,7 +1854,7 @@ gtk_handlers_run (GtkHandler       *handlers,
                                                         signal->nparams,
                                                         params);
              else if (handlers->object_signal)
-               /* don't GTK_OBJECT(handlers->func_data) cast */
+               /* don't cast with GTK_OBJECT () */
                (* signal->marshaller) ((GtkObject*) handlers->func_data,
                                        handlers->func,
                                        handlers->func_data,
@@ -1833,25 +1873,24 @@ gtk_handlers_run (GtkHandler     *handlers,
                                   signal->params,
                                   signal->return_val);
          
-         if (gtk_emission_check (stop_emissions, object,
-                                 signal->signal_id))
+         if (stop_emissions && gtk_emission_check (stop_emissions,
+                                                   object,
+                                                   signal->signal_id))
            {
-             gtk_emission_remove (&stop_emissions, object,
-                                  signal->signal_id);
+             gtk_emission_remove (&stop_emissions, object, signal->signal_id);
              
-             if (signal->signal_flags & GTK_RUN_NO_RECURSE)
-               gtk_emission_remove (&restart_emissions, object,
-                                    signal->signal_id);
              gtk_signal_handler_unref (handlers, object);
+
              return EMISSION_DONE;
            }
-         else if ((signal->signal_flags & GTK_RUN_NO_RECURSE) &&
-                  gtk_emission_check (restart_emissions, object,
-                                      signal->signal_id))
+         else if (restart_emissions &&
+                  signal->signal_flags & GTK_RUN_NO_RECURSE &&
+                  gtk_emission_check (restart_emissions, object, signal->signal_id))
            {
-             gtk_emission_remove (&restart_emissions, object,
-                                  signal->signal_id);
+             gtk_emission_remove (&restart_emissions, object, signal->signal_id);
+
              gtk_signal_handler_unref (handlers, object);
+
              return EMISSION_RESTART;
            }
        }
index da81deb22d6fc90ef9737098f0b0d2b41de9695a..ff0288c6514818669b406c6488e3a6c6802ebd75 100644 (file)
 # widget <widget_set> style <style_name>
 # widget_class <widget_class_set> style <style_name>
 
-#include "/opt/themes/share/themes/W/gtk/gtkrc"
-#include "/home/otaylor/.themes/Ignorant/gtk/gtkrc"
+# testgtkrc2 sets all the buttons in the main window to blue by default
+include "testgtkrc2"
 
-style "defaultfont" {
-  font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*"
+pixmap_path "."
+
+style "defaultfont"
+{
 #  fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*"
+  font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*"
 }
 
+# common default
 class "GtkWidget" style "defaultfont"
 
+style "window"
+{
+#  bg_pixmap[NORMAL] = "warning.xpm"
+}
+
+style "scale"
+{
+  fg[NORMAL] = { 1.0, 0, 0 }
+  bg_pixmap[NORMAL] = "<parent>"
+}
+
+style "button" = "default"
+{
+#  fg[PRELIGHT] = { 1.0, 1.0, 1.0 }
+#  bg[PRELIGHT] = { 0, 0, 0.75 }
+#  bg[PRELIGHT] = { 0.75, 0, 0x00 }
+}
+
+style "toggle_button" = "button"
+{
+  fg[NORMAL] = { 1.0, 0, 0 }
+  fg[ACTIVE] = { 1.0, 0, 0 }
+  bg_pixmap[NORMAL] = "<parent>"
+}
+
+style "text"
+{
+  bg_pixmap[NORMAL] = "marble.xpm"
+  text[NORMAL] = { 1.0, 1.0, 1.0 }
+  fg[NORMAL] = { 1.0, 1.0, 1.0 }
+  base[NORMAL] = { 0.0, 0.0, 0.0 }
+}
+
+style "slider"
+{
+  fg[NORMAL] = { 1.0, 1.0, 1.0 }
+  bg[NORMAL] = { 0.0, 0.0, 1.0 }
+  bg[ACTIVE] = { 0.0 ,0.0, 0.5 }
+  bg[PRELIGHT] = { 0.75 ,0.75, 1.0 }
+}
+
+style "ruler"
+{
+  font = '-adobe-helvetica-medium-r-normal--*-80-*-*-*-*-*-*'
+}
+
+style "curve"
+{
+  fg[NORMAL] = { 58000, 0, 0 }                  # red
+}
+
+style "red-bar"
+{
+  bg[PRELIGHT] = { 0.95, .55, 0.55 }
+}
+
+# override testgtk2, introduce the green color in the button list
+style 'button_list' = 'button'
+{
+  font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
+  bg[PRELIGHT] = { 0, 0.75, 0x00 }
+}
+widget "main window.*GtkScrolledWindow.*GtkButton*" style "button_list"
+
+
+class "GtkScrollbar" style "red-bar"
+
+widget_class "GtkWindow" style "window"
+widget_class "GtkDialog" style "window"
+widget_class "GtkFileSelection" style "window"
+widget_class "*Gtk*Scale" style "scale"
+widget_class "*GtkCheckButton*" style "toggle_button"
+widget_class "*GtkRadioButton*" style "toggle_button"
+widget_class "*GtkButton*" style "button"
+widget_class "*Ruler" style "ruler"
+widget_class "*GtkText" style "text"
+widget "*GtkCurve" style "curve"
+
 binding "test1"
 {
   bind "<ctrl>1" {
-    "debug-msg" ("hallo and") 
-    "debug-msg" ("huhu")
+    "debug-msg" ("jup!")
   }
 }
 
 binding "test2"
 {
   bind "<ctrl>1" {
-    "debug-msg" ("jup!") 
+    "debug-msg" ("hallo and")
+    "debug-msg" ("huhu")
   }
 }
 
@@ -39,10 +121,10 @@ binding "test2"
 # lowest
 # gtk         (used by gtk for internal class bindings)
 # application (for hard coded bindings on application basis)
-# rc          (used implicitly by rc files)
+# rc          (used implicitel by rc files)
 # highest
-class "GtkButton" binding "test1"           # implicit : rc
-class "GtkButton" binding : highest "test2" # override "rc" priority
+class "GtkWindow" binding "test1"           # implicit : rc
+class "GtkWindow" binding : highest "test2" # override "rc" priority
 
 binding "clist-test"
 {
index da81deb22d6fc90ef9737098f0b0d2b41de9695a..ff0288c6514818669b406c6488e3a6c6802ebd75 100644 (file)
 # widget <widget_set> style <style_name>
 # widget_class <widget_class_set> style <style_name>
 
-#include "/opt/themes/share/themes/W/gtk/gtkrc"
-#include "/home/otaylor/.themes/Ignorant/gtk/gtkrc"
+# testgtkrc2 sets all the buttons in the main window to blue by default
+include "testgtkrc2"
 
-style "defaultfont" {
-  font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*"
+pixmap_path "."
+
+style "defaultfont"
+{
 #  fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*"
+  font = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,*"
 }
 
+# common default
 class "GtkWidget" style "defaultfont"
 
+style "window"
+{
+#  bg_pixmap[NORMAL] = "warning.xpm"
+}
+
+style "scale"
+{
+  fg[NORMAL] = { 1.0, 0, 0 }
+  bg_pixmap[NORMAL] = "<parent>"
+}
+
+style "button" = "default"
+{
+#  fg[PRELIGHT] = { 1.0, 1.0, 1.0 }
+#  bg[PRELIGHT] = { 0, 0, 0.75 }
+#  bg[PRELIGHT] = { 0.75, 0, 0x00 }
+}
+
+style "toggle_button" = "button"
+{
+  fg[NORMAL] = { 1.0, 0, 0 }
+  fg[ACTIVE] = { 1.0, 0, 0 }
+  bg_pixmap[NORMAL] = "<parent>"
+}
+
+style "text"
+{
+  bg_pixmap[NORMAL] = "marble.xpm"
+  text[NORMAL] = { 1.0, 1.0, 1.0 }
+  fg[NORMAL] = { 1.0, 1.0, 1.0 }
+  base[NORMAL] = { 0.0, 0.0, 0.0 }
+}
+
+style "slider"
+{
+  fg[NORMAL] = { 1.0, 1.0, 1.0 }
+  bg[NORMAL] = { 0.0, 0.0, 1.0 }
+  bg[ACTIVE] = { 0.0 ,0.0, 0.5 }
+  bg[PRELIGHT] = { 0.75 ,0.75, 1.0 }
+}
+
+style "ruler"
+{
+  font = '-adobe-helvetica-medium-r-normal--*-80-*-*-*-*-*-*'
+}
+
+style "curve"
+{
+  fg[NORMAL] = { 58000, 0, 0 }                  # red
+}
+
+style "red-bar"
+{
+  bg[PRELIGHT] = { 0.95, .55, 0.55 }
+}
+
+# override testgtk2, introduce the green color in the button list
+style 'button_list' = 'button'
+{
+  font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
+  bg[PRELIGHT] = { 0, 0.75, 0x00 }
+}
+widget "main window.*GtkScrolledWindow.*GtkButton*" style "button_list"
+
+
+class "GtkScrollbar" style "red-bar"
+
+widget_class "GtkWindow" style "window"
+widget_class "GtkDialog" style "window"
+widget_class "GtkFileSelection" style "window"
+widget_class "*Gtk*Scale" style "scale"
+widget_class "*GtkCheckButton*" style "toggle_button"
+widget_class "*GtkRadioButton*" style "toggle_button"
+widget_class "*GtkButton*" style "button"
+widget_class "*Ruler" style "ruler"
+widget_class "*GtkText" style "text"
+widget "*GtkCurve" style "curve"
+
 binding "test1"
 {
   bind "<ctrl>1" {
-    "debug-msg" ("hallo and") 
-    "debug-msg" ("huhu")
+    "debug-msg" ("jup!")
   }
 }
 
 binding "test2"
 {
   bind "<ctrl>1" {
-    "debug-msg" ("jup!") 
+    "debug-msg" ("hallo and")
+    "debug-msg" ("huhu")
   }
 }
 
@@ -39,10 +121,10 @@ binding "test2"
 # lowest
 # gtk         (used by gtk for internal class bindings)
 # application (for hard coded bindings on application basis)
-# rc          (used implicitly by rc files)
+# rc          (used implicitel by rc files)
 # highest
-class "GtkButton" binding "test1"           # implicit : rc
-class "GtkButton" binding : highest "test2" # override "rc" priority
+class "GtkWindow" binding "test1"           # implicit : rc
+class "GtkWindow" binding : highest "test2" # override "rc" priority
 
 binding "clist-test"
 {